Proměnné

Dalším nezbytným základním kamenem každého programovacího jazyka jsou proměnné. Laicky si lze představit, že program vymezí část paměti (škatulku), kterou označí jménem proměnné a do které bude její hodnoty ukládat. S proměnnými už jsme se setkali u procedur s parametry (proměnnými), kdy jsme proceduru mohli spouštět s různými (proměnnými) hodnotami. Názvy proměnných mohou být prakticky libovolné, nesmí obsahovat některé speciální znaky. Zvláště při větším počtu proměnných jsou vhodné názvy, které vystihují jejich funkci. (Podobný pojem proměnná znáte i z matematiky.)

Základní operací s proměnnými je uložení hodnoty do proměnné, v Imagine se využívá příkaz make, například:
make"x 1 - do proměnné s názvem x se uloží číslo 1
make"y 5 - do proměnné y se vloží číslo 5

Do proměnné můžeme uložit také hodnotu jiné proměnné (pokud už existuje), například:

make"y :x - do proměnné y bude uložena hodnota proměnné x, všimněte si dvojtečky před názvem proměnné x, ta odlišuje název proměnné od možného názvu procedury, je tedy nutná!

Dále je možné s proměnnými provádět běžné matematické operace (i nám neznámé :-) ), například:

make"soucet :x+:y - do proměnné soucet se uloží součet hodnot proměnných x a y, pokud v proměnných x a y zatím není nic uloženo, dojde k chybě.
make"x :x+:y - do proměnné x se vloží součet proměnných x a y, součet se nejprve vypočte a potom se uloží do proměnné x, čili se vlastně proměnná x zvětší o hodnotu proměnné y

Velice častým programátorským obratem je zvětšení proměnné například o jedničku (třeba při počítání bodů za správné odpovědi, zásahy apod.):
make"body :body+1

Kontrolní otázka: pokud jste správně pochopili, pak jistě snadno určíte jaké hodnoty jsou v proměnných x a y po vykonání všech příkazů v předešlém textu! :-)

Projekt KALKULAČKA

Práci s proměnnými využijeme u projektu KALKULAČKA, ve kterém naprogramujeme kalkulačku tak, jak ji známe například z příslušenství Windows - budeme ji ovládat klikáním na tlačítka s čísly, symboly operací nebo rovnítkem.

Kromě vlastností proměnných budeme k vytvoření kalkulačky potřebovat ještě další nové příkazy.
"Displej" kalkulačky tvoří textové pole s názvem text1. Aby se po kliknutí na tlačítko s číslicí do tohoto textového pole připsala příslušná číslice, je potřeba příkaz printToTextbox - piš do textového pole, a příkaz type - připiš znak (znakový řetězec), konkrétně by na tlačítku s číslicí mohlo být například:
printToTextbox "text1 type 6 - znamená: piš do textového pole text1, připiš do něj 6

Pokud všechna tlačítka s čísly mají pro událost Při zapnutí podobné odpovídající příkazy, můžeme už zapsat číslo.

Pro další práci už budeme potřebovat proměnné, jsou pojmenované takto:
a a b - proměnné pro čísla, se kterými budeme provádět operace
o - číslo, které bude určovat typ operace (zda budeme sčítat nebo odčítat atd.)
v - proměnná, do které budeme ukládat výsledek operace

Už tedy můžeme zapsat číslo, když ho dopíšeme, klikneme na znaménko s operací. Co všechno by se mělo stát:
- číslo, které je na displeji, by se mělo uložit do proměnné a
- displej by se měl vyprázdnit
- do proměnné o by se mělo uložit číslo, podle kterého později poznám, kterou operaci mám provést
Příkaz na tlačítku pro součet by mohl vypadat takto:
make "a text1 text1'setvalue " make "o 1
Tento příkaz nejprve do proměnné a uloží hodnotu pole text1, čili číslo z "displeje", potom nastaví hodnotu pole text1 (displeje) na prázdnou (to je mezera za uvozovkami za příkazem setvalue) a nakonec do proměnné o uloží číslo 1.

Vybrali jsme operaci, můžeme zapsat druhé číslo a stiskneme rovnítko. Tentokrát by mělo proběhnout následující:
- číslo, které je na displeji (v poli text1), by se mělo uložit do proměnné b
- měla by se spustit procedura, která provede výpočet
Příkazy na tlačítku s rovnítkem by mohly vypadat takto:
make "b text1 vypocti - ulož do proměnné b hodnotu z displeje a spusť proceduru vypočti

Posledním krokem je řídící procedura, která provádí výpočet podle toho, jaká byla zvolená operace a potom vytiskne výsledek:
to vypocti
if :o=1 [make"v :a+:b]
text1'setvalue :v
end
V této ukázce je uvedena jen možnost pro součet (o=1), další možnosti jsou obdobné.



Projekt ulož pod názvem kalkulačka.imp !

Úkol:

Základní úloha:

Ze složky s lekcemi si zkopíruj do své složky projekt kalkulačka.imp (pravým tlačítkem - Uložit cíl jako..) a vyzkoušej si ho. Bohužel není úplný, podle textu v lekci doplň:
- správnou funkčnost tlačítek pro číslice 8 a 9
- správné příkazy pro tlačítka pro násobení a dělení
- další řádky procedury vypocti pro odčítání, násobení a dělení
- uprav vzhled (barvy) kalkulačky tak, aby odpovídal tvému estetickému cítění :-) a doplň jméno programátora


Úloha na plus (jedna nová funkce):

Doplň další tlačítko pro výpočet takzvané převrácené hodnoty (1/x). Pozor, jde o operaci jen s jednou proměnnou!


Úloha na jedničku (dvě nové funkce):

Doplň další funkci, kterou znáš z matematiky a ještě jednu tvoji osobní funkci, kterou znáš z jiné kalkulačky, nebo si sám vymyslíš (užitečnou :-) ).